/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Misja
 */
public class Experimenteel {
    
}

   /*
     * recursieve methode werkt nog niet wordt aangewerkt
     */
//    public boolean movePart(String direction) {
//        return movePart(direction, this.currentField);
//    }
//
//    public boolean movePart(String direction, Field currentField) {
//        // movable can move moet nog afgevangen worden
//        Field neighbor = currentField.getNeighbor(direction);
//        if (neighbor != null) {
//            if (neighbor.getPart() == null) {
//                 currentField.setPart(null);
//                neighbor.setPart(this);
//               
//                 setCurrentField(neighbor);
//                return true;
//            } else {
//                if (neighbor.getPart().isMovable()) {
//                    boolean move = movePart(direction, neighbor);
//                    if (move) {
//                         currentField.setPart(null);
//                        neighbor.setPart(this);
//                       
//                        setCurrentField(neighbor);
//                        return true;
//                    }
//                }
//            }
//        }
//        return false;
//    }

//    public void move(Directions direction) {
//
//        HashMap<Field, Part> changes = new HashMap<>();
//        Field firstField = this.currentField;
//        Field activeField;
//
//        // buur veld wordt bepaald en opgeslagen.
//        Field neighbor = firstField.getNeighbor(direction);
//
//        // het spel element van het eerste veld wordt tijdelijk bewaard.
//        Part currentPart = firstField.getPart();
//
//        // eind conditie wordt bepaald
//        boolean endCondition = false;
//
//        /* Hier wordt er gekeken of er wel een buur veld is
//         * als er geen buur veld is dan stop de functie. */
//        if (neighbor == null) {
//            return;
//        }
//
//        // Eerste actie wordt altijd opgeslagen.
//        changes.put(firstField, null);
//
//        while (endCondition == false) {
//            // Hier word gekeken of er een GamePart zit in het buur veld.
//            if (neighbor.getPart() == null) {
//                // Eind conditie is vervult loop stopt.
//                changes.put(neighbor, currentPart);
//                endCondition = true;
//                break;
//            }
//
//            // Hier word gekeken of het onder deel kan worden verplaats;
//            if (neighbor.getPart().isMovable()) {
//                // Het huidige GamePart wordt in het buur veld opgeslagen.
//                changes.put(neighbor, currentPart);
//                // Huidige GamePart wordt gevuld met het op object van het buur veld.
//                currentPart = neighbor.getPart();
//                // Het huidige veld wordt het buur veld.
//                activeField = neighbor;
//                // Het buur veld wordt de het buur veld van het huidige veld.
//                neighbor = activeField.getNeighbor(direction);
//
//                // Als er geen buur veld is dan stop de loop.
//                if (neighbor == null) {
//                    break;
//                }
//
//            } else {
//                // Als een onderdeel niet verplaatsbaar is stop de loop.
//                break;
//            }
//        }
//
//        // Kijkt eraan de eindconditie is voldaan zoja dan voert hij het uit.
//        if (endCondition) {
//            Iterator<Entry<Field, Part>> it = changes.entrySet().iterator();
//            while (it.hasNext()) {
//                Map.Entry<Field, Part> entry = it.next();
//                Field t = entry.getKey();
//                Part p = entry.getValue();
//                t.setPart(p);
//            }
//        }
//    }